#ifndef SHAPE_H
#define SHAPE_H
#include <string>
#include "vec.h"

class Shape{
	public:
		Shape();
		virtual ~Shape();
		virtual std::string getName() = 0;
		virtual void draw() const = 0;
		
		void setPosition(vec2f);
		void setSpeed(vec2f);
		void setColor(vec3f);
		void setFactor(float);
		const vec2f& getPos() const;
		const vec3f& getColor() const;
		const vec2f& getSpeed() const;
		const float getFactor() const;
		vec2f& getPos();
		vec3f& getColor();
		vec2f& getSpeed();
		float getFactor();
		
		virtual void setDim(vec2f) = 0;
		virtual const vec2f& getDim() const = 0;
		virtual vec2f& getDim() = 0;
		
	protected:
		vec2f _pos;
		vec2f _speed;
		vec3f _color;
		float _factor;
};

#endif
